//整型数组的加法
//-给定num（以数组形式，如 1321 -》 [1,3,2,1]）,和整数k，返回整数+k的数组形式
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
int* addToArrayForm(int* num, int numSize, int k, int* returnSize) {
	int sum = 0;
	*returnSize = 0;
	int* arr = (int*)malloc(sizeof(int) * (numSize + 5));
	if (!arr) {
		assert(0);
		return NULL;
	}
	for (int i = numSize - 1; i >= 0; i--) {
		sum = num[i] + k % 10;
		k /= 10;
		if (sum >= 10) {
			sum -= 10;
			k += 1;
		}
		arr[(*returnSize)++] = sum;
	}
	//数组遍历完之后k依然 > 0
	while (k > 0) {
		arr[(*returnSize)++] = k % 10;
		k /= 10;
	}
	//数组逆置
	int left = 0;
	int right = *returnSize - 1;
	while (left <= right) {
		int temp = arr[left];
		arr[left] = arr[right];
		arr[right] = temp;
		left++;
		right--;
	}
	return arr;
}
int main() {
	int num[] = { 1,3,2,1 };
	int k, returnSize, numSize;
	scanf("%d", &k);
	numSize = sizeof(num) / sizeof(int);
	printf("原整数>> ");
	for (int i = 0; i < numSize; i++)
		printf("%d", num[i]);
	printf("\n所加整数: %d\n",k);
	int* ret = addToArrayForm(num, numSize, k, &returnSize);
	printf("运算后的整数>> ");
	for (int i = 0; i < returnSize; i++)
		printf("%d ", ret[i]);
	printf("\n整数个数: %d\n", returnSize);
	return 0;
}